% Created 2022-04-14 周四 13:17
% Intended LaTeX compiler: xelatex
\documentclass[a4paper]{article}
                 \usepackage{graphicx}
                 \usepackage{xcolor}
                 \usepackage{xeCJK}
                 \usepackage{fixltx2e}
                 \usepackage{longtable}
                 \usepackage{float}        
                 \usepackage{tikz}         
                 \usepackage{wrapfig}      
                 \usepackage{latexsym,amssymb,amsmath}
                 \usepackage{textcomp}
                 \usepackage{bicaption}
                 \usepackage{listings}     
                \usepackage{marvosym}     
                \usepackage{textcomp}     
                \usepackage{latexsym}     
                \usepackage{natbib}
                \usepackage{indentfirst}
		\usepackage{hyperref}
                \usepackage{geometry}
                \usepackage{minted}
                \setCJKmainfont{宋体}
                \setlength{\parindent}{2em}
                \usepackage{color}
                \usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[R]{\footnotesize{《Android 物联网应用程序开发》 广西职业师范学院实验教学指导书}}
\geometry{a4paper,left=2.5cm,right=2.5cm,top=2cm,bottom=2cm}
\setCJKmainfont{仿宋}
\setCJKsansfont{Microsoft YaHei}
\setCJKmonofont{Microsoft YaHei}

\usemintedstyle{emacs}
    \setminted{%
        autogobble,% automatically remove the spaces to the left of the code
        linenos=true,% show line numbers
        fontsize=\small,% smaller font size
        % escapeinside=@@,% insert latex code between @ and @
        frame=lines,% frame styles: none or lines
        % frame=none,
        numbers=none,% show line numbers on: left, right, both or none
        mathescape=true,% insert math code
	breaklines=true,
    }%
    \setmintedinline{%
        fontsize=\smallsize,
    }%
\date{\today}
\title{实验五：适配器组件练习}
\hypersetup{
 pdfauthor={},
 pdftitle={实验五：适配器组件练习},
 pdfkeywords={},
 pdfsubject={},
 pdfcreator={Emacs 27.1 (Org mode 9.3.8)}, 
 pdflang={English}}
\begin{document}

\maketitle
\tableofcontents

\newpage

\section{实验目的}
\label{sec:orge31d4b9}
\begin{itemize}
\item 掌握适配器组件的使用
\end{itemize}
\section{实验设备和器件}
\label{sec:org4c39359}
\begin{itemize}
\item PC
\item 内存要求 8G 以上
\end{itemize}
\section{实验内容}
\label{sec:org836fb4b}
\subsection{实验一: ListView + ArrayAdapter}
\label{sec:org5108294}
在这个实训中，你需要通过ArrayAdapter与一个字符串数据进行绑定:
\begin{minted}[]{java}
String [] address = {"北京","武汉","南京","深圳"};
ArrayAdapter<String> arrayAdapter = new ArrayAdapter(ProgressActivity.this,
						     android.R.layout.simple_dropdown_item_1line,
						     address);

\end{minted}
通过ListView的setAdapter方法与ArrayAdapter连接:
\begin{minted}[]{java}
listView.setAdapter(arrayAdapter);
\end{minted}
在这一次实训中, 你需要通过调用ListView中的setOnItemClickListener方法为每一个item设置监听选项,当某个item
被点击，那么该item的内容即刻显示在上方的TextView组件内。
实训效果图: \\

\begin{center}
\includegraphics[width=0.45\textwidth]{img/listview_arrayadapter.jpg}
\end{center}

\subsection{实验二:ListView + SimpleAdapter}
\label{sec:org74e1a9e}
SimpleAdapter的使用：
\begin{enumerate}
\item 在xml创建一个ListView,以及列表项的布局
\item 创建资源集合变量
\item 创建资源序列
\item SimpleAdapter绑定数据
\end{enumerate}

关键代码1(整体布局)： 
\begin{minted}[]{xml}
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
	android:id="@+id/textView"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	android:text="ListView+SimpleAdapter" />

    <ListView
	android:id="@+id/listview"
	android:layout_width="match_parent"
	android:layout_height="wrap_content" />
</LinearLayout>
\end{minted}

关键代码1(列表项布局):
\begin{minted}[]{xml}
  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
	android:id="@+id/image"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:layout_gravity="center_vertical"/>
    <TextView
	android:id="@+id/dec"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:layout_gravity="center_vertical"
	android:textSize="30dp"/>
</LinearLayout>
\end{minted}
关键代码2(images与desc数组,图片可以从网上下载):
\begin{minted}[]{java}
int[] images = {R.drawable.clock, R.drawable.mail, R.drawable.icon};
String [] desc = {"计算器","邮件","收音机"};
\end{minted}
关键代码3(资源序列):
\begin{minted}[]{java}
//创建一个资源序列
List<Map<String,Object>> listItems = new ArrayList<>();
for (int i = 0; i < desc.length; i++)
{
    Map<String,Object> item = new HashMap<>();
    item.put("image",images[i]);
    item.put("desc",desc[i]);
    listItems.add(item);
}
\end{minted}
关键代码4(数据绑定):
\begin{minted}[]{java}
//绑定数据
SimpleAdapter simpleAdapter = new SimpleAdapter(SimpleAdapterListView.this,
						listItems,R.layout.simple_item,
						new String[]{"image","desc"},
						new int[]{R.id.image,R.id.dec});
 listView.setAdapter(simpleAdapter);
\end{minted}

实训效果: \\

\begin{center}
\includegraphics[width=0.45\textwidth]{./img/screenshot_20220414_131744.png}
\end{center} 
\end{document}